import Vue from 'vue'
import Vuex from 'vuex'
import { get_song_detail, get_lyric } from "../api/common";
Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    // 使用 play_state 来表示2音频的播放状态
    play_state: false,
    song_info: {
      ars: [],
    }, // 表示当前正在播放音频相关信息

    // 表示当前播放列表 集合
    play_list: [],
    // 表示当前播放歌曲的下标(第几首)
    song_idx: 0,
    current_song_info: {
      current_time: 0,
      // duration大于0 ，防止在最右边
      duration: 1
    },
    // 组件loading 
    loading: false,

    // 歌曲歌词
    song_lyric: [],
  },
  mutations: {
    // 获取歌词
    set_lyric(state, ly_arr) {
      state.song_lyric = ly_arr
    },
    //  loading 
    show_loading(state) {
      state.loading = true;
    },
    hide_loading(state) {
      state.loading = false;
    },

    change_current_song(state, info_obj) {
      state.current_song_info = info_obj
    },
    chang_state(state, is_playing) {
      // 通过is_playing 来设置音频的播放状态
      state.play_state = is_playing;
    },
    set_song_info(state, info) {
      state.song_info = info;
    },
    // 设置 播放列表
    set_play_list(state, list) {
      state.play_list = list;
    },
    change_idx(state, val) {
      state.song_idx = val;
    }
  },
  actions: {
    async get_song_detail(context, id) {
      get_song_detail(id).then((song_detail) => {
        let current_song = song_detail.data.songs[0];
        let song_info = {
          album_name: current_song.al.name,
          ars: current_song.ar,
          id: current_song.id,
          picUrl: current_song.al.picUrl,
          song_name: current_song.name,

        };
        // 将当前音频的相关信息存至 store, 歌名 ar id
        // 注: 点击播放时, 会将播放列表切换至当前歌曲的所在歌单, 方便后面做上一首,下一首的切换;
        context.commit("set_song_info", song_info);
      });
      // 获取歌词
      get_lyric(id).then((res) => {
        console.log("歌词", res);
        let lyric = res.data.lrc.lyric.split("\n")
        lyric.pop();
        lyric = lyric.map((el) => {
          let items = el.split("]")
          let time = items[0].slice(1, 6).split(":");

          let timestamp = Number(time[0]) * 60 + Number(time[1])

          return {
            timestamp,
            text: items[1]
          }

        })

        context.commit("set_lyric", lyric);


      })


    }

  },
  modules: {
  }
})
